
option explicit

' Auto-Completar el campo de detalle
sub VUI_DetalleProductosItem_OnEndEditEvent (byval sNameUI)
    dim oUI
    dim oViewUI
    dim oItem
    dim oOTE
    dim oProducto

    set oItem = oApp.oUIs.Item(sNameUI).oViewUI.oObjectSelected
    if not oItem is nothing then

        set oOTE = oItem.oObjectProperty("id_detalle_productos")

        ' Solo se permite modificar si la ote esta pendiente
        if oOTE.oSimpleProperty("id_estado").sValue = "1" then

            ' Llamo al metodo base
            call base_VUI_OnEndEditEvent(sNameUI)

            ' Solo actualizo el detalle si se modifican las columnas Producto o Cantidad
            if oApp.oUIs.Item(sNameUI).oViewUI.iColSelected <> 2 then

                ' Obtengo el producto
                set oProducto = oItem.oObjectProperty("id_producto")
                if not oProducto is nothing then

                    ' Actualizo el detalle
                    oItem.oSimpleProperty("detalle").sValue = oProducto.oSimpleProperty("nombre").sValue & " por " & oItem.oSimpleProperty("cantidad").sValue & " unidades"
                    oItem.save

                    ' Refresco la VUI
                    oApp.oUIs.Item(sNameUI).oViewUI.RefreshData

                end if
            end if

        else
            msgbox "La transaccion [" & oOTE.oSimpleProperty("numero").sValue & "] debe estar en estado pendiente."
            oApp.oUIs.Item(sNameUI).oViewUI.RefreshData
        end if
    end if
end sub


' No se puede dar de baja los items de transacciones no pendientes
sub VUI_DetalleProductosItem_OnDeleteObjectEvent (byval sNameUI)
    dim oItem
    dim oOTE
	dim bExito
	
	' Verifico que todos los items cumplan las
	bExito = true
	
    ' Obtengo el primer item seleccionado
    set oItem = oApp.oUIs.item(sNameUI).oViewUI.oObjectSelected()

	if not oItem is nothing then
    	set oOTE = oItem.oObjectProperty("id_detalle_productos")

       	' Solo se permite modificar si la ote esta pendiente
       	if oOTE.oSimpleProperty("id_estado").sValue <> "1" then bExito = false        	
    end if


	' Valido
	if bExito then 
		call base_VUI_OnDeleteObjectEvent(sNameUI)
	else
    	msgbox "La transaccion [" & oOTE.oSimpleProperty("numero").sValue & "] debe estar en estado pendiente."
     	oApp.oUIs.Item(sNameUI).oViewUI.RefreshData
    end if
end sub


' No se puede dar de alta items en transacciones no pendientes
sub VUI_DetalleProductosItem_OnCreateObjectEvent (byval sNameUI)
    
	dim oParentUI
    dim oOTE
	dim bExito
	
	' Verifico que todos los items cumplan las
	bExito = true
	
    ' Obtengo el primer item seleccionado
    set oParentUI = oApp.oUIs.item(sNameUI).oParentUI()

	if not oParentUI is nothing then
    	set oOTE = oParentUI.oViewUI.oObjectSelected()

		if not oOTE is nothing then
	       	' Solo se permite modificar si la ote esta pendiente
    	   	if oOTE.oSimpleProperty("id_estado").sValue <> "1" then bExito = false
    	else
			msgbox "No se pudo obtener la OTE para validar su estado."
    	end if
    end if


	' Valido
	if bExito then 
		call base_VUI_OnCreateObjectEvent(sNameUI)
	else
    	msgbox "La transaccion [" & oOTE.oSimpleProperty("numero").sValue & "] debe estar en estado pendiente."
     	oApp.oUIs.Item(sNameUI).oViewUI.RefreshData
    end if
end sub
